package com.atguigu.common.exception;

import com.atguigu.common.result.ResponseEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;

@Slf4j
public abstract class Assert {
    /**
     * 断言对象不为空
     * @param obj  为空则抛出异常
     * @param responseEnum
     */
    public static void notNull(Object obj, ResponseEnum responseEnum){
        if(obj==null){
            log.info("obj is null .........");
            throw new BusinessException(responseEnum);
        }
    }

    /**
     * 断言对象为空
     * @param object
     * @param responseEnum
     */
    public static void isNull(Object object,ResponseEnum responseEnum){
        if(object!=null){
            log.info("object is not null.........");
            throw new BusinessException(responseEnum);
        }
    }

    /**
     * 断言表达式为正
     * 如果不为真，则抛出异常
     * @param expression
     * @param responseEnum
     */
    public static void isTrue(boolean expression,ResponseEnum responseEnum){
        if(!expression){
            log.info("fail................");
            throw new BusinessException(responseEnum);
        }
    }

    /**
     * 断言两个对象不相等，如果相等，则抛出异常
     * @param m1
     * @param m2
     * @param responseEnum
     */
    public static void notEquals(Object m1,Object m2,ResponseEnum responseEnum){
        if(m1.equals(m2)){
            log.info("equals.................");
            throw new BusinessException(responseEnum);
        }
    }

    /**
     * 断言两个对象相等，如果不相等，则抛出异常
     * @param m1
     * @param m2
     * @param responseEnum
     */
    public static void equals(Object m1,Object m2,ResponseEnum responseEnum){
        if(!m1.equals(m2)){
            log.info("not equals..............");
            throw new BusinessException(responseEnum);
        }
    }

    /**
     * 断言参数不为空，如果为空则抛出异常
     * @param s
     * @param responseEnum
     */
    public static void notEmpty(String s,ResponseEnum responseEnum){
        if(StringUtils.isEmpty(s)){
            log.info("is empty..........");
            throw new BusinessException(responseEnum);
        }
    }
}
